package com.fowo.api.sys.config;

import com.fowo.api.sys.service.FileStorageService;
import lombok.Data;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.io.File;

/**
 * 文件服务配置属性
 */
@Data
@ConfigurationProperties(prefix = "file-service")
public class FileServiceProperties implements InitializingBean {

    /**
     * 使用本地文件服务时，表示存储目录
     */
    private File localDir;

    /**
     * 默认的上传存储服务
     */
    private Class<? extends FileStorageService> uploadStorageService;

    /**
     * 阿里云 OSS
     */
    private AliyunOss aliyunOss;

    @Override
    public void afterPropertiesSet() throws Exception {
        if (localDir != null) {
            if (!localDir.exists()) {
                throw new Exception("file-service.local-dir 配置的目录无效！");
            }
        }
        if (uploadStorageService == null) {
            throw new Exception("必须提供 file-service.upload-storage-service 配置！");
        }
    }

    /**
     * 阿里云 OSS 相关配置
     */
    @Data
    public static class AliyunOss {

        /**
         * 存储桶名称
         */
        private String bucketName;

        /**
         * 区域，默认为 cn-hangzhou
         */
        private String region = "cn-hangzhou";

        private String endpoint;

        /**
         * 帐号键
         */
        private String accessKeyId;

        /**
         * 帐号安全码
         */
        private String accessKeySecret;

        /**
         * 角色的ARN信息，设置此值后将使用STS临时访问凭证访问OSS
         */
        private String roleArn;
    }
}
